/**
 * 对数字数组按其数值大小进行排序，确保数组不会原地修改。
 *
 * 这是必要的，因为 JavaScript 中 .sort 的默认行为是将数组作为字符串值进行排序
 *
 *     [1, 10, 12, 102, 20].sort()
 *     // 输出
 *     [1, 10, 102, 12, 20]
 *
 * @param {Array<number>} x 输入数组
 * @return {Array<number>} 排序后的数组
 * @private
 * @example
 * numericSort([3, 2, 1]) // => [1, 2, 3]
 */
function numericSort(x) {
    return (
        x
            // 确保数组不会原地修改
            .slice()
            // 比较函数，将输入视为数值
            .sort(function (a, b) {
                return a - b;
            })
    );
}

export default numericSort;
